package com.liufei1988.sort;

/**
 * 冒泡排序：只会操作相邻的两个数，每次冒泡都会对相邻的两个数据进行比较，看是否满足大小关系要求，如果不满足就让他两交换
 */
public class BubbleSort {

    public static int[] getBubbleSort(int[] data,int n){
        if (n<=1){
            return data;
        }
        for (int i=0;i<n;i++){
            //提前退出循环标志位
            boolean flag=false;
            for (int j=0;j<n-i-1;j++){
                if (data[j]>data[j+1]){//交换
                    int tmp=data[j];
                    data[j]=data[j+1];
                    data[j+1]=tmp;
                    flag=true;
                }
            }
            for (Integer m:data) {
                System.out.print(m+" ");
            }
            System.out.println();
            if (!flag) break;
        }
        return data;
    }

    public static void main(String[] args) {
        int[] data={9,10,5,11,3,21,2};
        data=getBubbleSort(data,data.length);
        System.out.println(data);
    }
}
